package com.zzyl.common.utils;

/**
 * 用户线程本地工具类
 * 用于在线程本地存储登录用户ID和姓名
 * @author yhy
 */
public class UserThreadLocalUtil {
    
    /**
     * 存储用户ID的ThreadLocal
     */
    private static final ThreadLocal<Long> USER_ID_HOLDER = new ThreadLocal<>();
    
    /**
     * 存储用户姓名的ThreadLocal
     */
    private static final ThreadLocal<String> USER_NAME_HOLDER = new ThreadLocal<>();
    
    /**
     * 设置当前线程的用户ID
     * @param userId 用户ID
     */
    public static void setUserId(Long userId) {
        USER_ID_HOLDER.set(userId);
    }
    
    /**
     * 获取当前线程的用户ID
     * @return 用户ID
     */
    public static Long getUserId() {
        return USER_ID_HOLDER.get();
    }
    
    /**
     * 设置当前线程的用户姓名
     * @param userName 用户姓名
     */
    public static void setUserName(String userName) {
        USER_NAME_HOLDER.set(userName);
    }
    
    /**
     * 获取当前线程的用户姓名
     * @return 用户姓名
     */
    public static String getUserName() {
        return USER_NAME_HOLDER.get();
    }
    
    /**
     * 清除当前线程的用户信息
     * 防止内存泄漏，使用完毕后必须调用此方法
     */
    public static void clear() {
        USER_ID_HOLDER.remove();
        USER_NAME_HOLDER.remove();
    }
}